import { Message } from 'element-ui'
/** --------当前项目--------**/
function vIsTypeOrder(v, str) {
  return !!(v && v.indexOf(str) > -1)
}
/** --------通用--------**/
// 判断对象里是否有空
function vItemEmpty(obj) {
  const flag = Object.values(obj).some(v => this.empty(v))
  return flag
}
// 保留6数
export function vFormPrice(v, decimal = 6) {
  if (v === undefined || v === null) return 0
  if (typeof v === 'number') {
    v = parseFloat(v)
    return v <= 0 ? 0 : v.toFixed(decimal)
  } else if (typeof v === 'string') {
    v = v.replace(/[^\d.]/g, '')
    v = parseFloat(v)
    return isNaN(v) ? 0 : v <= 0 ? 0 : v.toFixed(decimal)
  } else {
    return 0
  }
}

// 格式化数据为 2,333.0000格式  价格展示保留2位 仅用作展示类型 不可用作计算类型
export function numFormat(val, digit = 2) {
  try {
    if (!val) {
      return val
    }
    let arr = parseFloat(val)
      .toFixed(digit)
      .split('.')
    let num = parseInt(arr[0])
    let c = num.toString().indexOf('.') !== -1 ? num.toLocaleString() : num.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
    return c + '.' + arr[1]
  } catch (e) {
    e && console.log(e)
    return val
  }
}

export function formTime(val) {
  return val ? val.replace('.0', '') : val
}
// 判断是否为空
// 判断当前的价格,大小限制7位数，2位小数，最大值限制9999999
function vPriceLimit(v) {
  if (v === undefined || v === null) return 0.0
  if (typeof v === 'number') {
    v = parseFloat(v)
    return v <= 0 ? 0 : v < 9999999 ? v.toFixed(6) : 9999999
  } else if (typeof v === 'string') {
    v = v.replace(/[^\d.]/g, '')
    v = parseFloat(v)
    return isNaN(v) ? 0 : v <= 0 ? 0 : v < 9999999 ? v.toFixed(6) : 9999999
  } else {
    return 0.0
  }
}
// 校验只能为整数，最大值限制9999999
function vNumber(v) {
  if (v === undefined || v === null) return 0
  if (typeof v === 'number') {
    v = parseInt(v)
    return v <= 0 ? 0 : v < 9999999 ? v : 9999999
  } else if (typeof v === 'string') {
    v = v.replace(/[^\d]/g, '')
    v = parseInt(v)
    return isNaN(v) ? 0 : v <= 0 ? 0 : v < 9999999 ? v : 9999999
  } else {
    return 0
  }
}
function vdNumber(v) {
  if (v === undefined || v === null) return 0
  if (typeof v === 'number') {
    v = parseInt(v)
    return v <= 0 ? 0 : v < 100 ? v : 100
  } else if (typeof v === 'string') {
    v = v.replace(/[^\d]/g, '')
    v = parseInt(v)
    return isNaN(v) ? 0 : v <= 0 ? 0 : v < 100 ? v : 100
  } else {
    return 0
  }
}
function vdNumbers(v) {
  v = parseInt(v)
  if (v === undefined || v === null) return 1
  if (typeof v === 'number') {
    console.log(v)
    return isNaN(v) ? 1 : v <= 0 ? 1 : v < 9999999 ? v : 9999999
  } else if (typeof v === 'string') {
    v = v.replace(/[^\d]/g, '')
    console.log(v)
    v = parseInt(v)
    return isNaN(v) ? 1 : v <= 0 ? 1 : v < 9999999 ? v : 9999999
  } else {
    return 1
  }
}
function vHundredNumbers(v) {
  v = parseInt(v)
  if (v === undefined || v === null) return 1
  if (typeof v === 'number') {
    console.log(v)
    return isNaN(v) ? 1 : v <= 0 ? 1 : v <= 9999 ? v : 9999
  } else if (typeof v === 'string') {
    v = v.replace(/[^\d]/g, '')
    v = parseInt(v)
    return isNaN(v) ? 1 : v <= 0 ? 1 : v <= 9999 ? v : 9999
  } else {
    return 1
  }
}
function vToFixed2(v) {
  console.log('555')
  v = Number(Number(v).toFixed(2))
  if (v === undefined || v === null) return 0.01
  if (typeof v === 'number') {
    console.log(v)
    return isNaN(v) ? 0.01 : v <= 0 ? 0.01 : v <= 9999 ? v : 9999
  } else if (typeof v === 'string') {
    v = v.replace(/[^\d]/g, '')
    v = Number(v)
    return isNaN(v) ? 0.01 : v <= 0 ? 0.01 : v <= 9999 ? v : 9999
  } else {
    return 0.01
  }
}
// 校验比率
function vFormRadio(v) {
  if (v === undefined || v === null) return 0.0
  if (typeof v === 'number') {
    v = parseFloat(v)
    return v <= 0 ? 0 : v < 100 ? v.toFixed(2) : 99.99
  } else if (typeof v === 'string') {
    v = v.replace(/[^\d.]/g, '')
    v = parseFloat(v)
    if (isNaN(v) || v <= 0) {
      return 0
    } else if (v < 100) {
      return v.toFixed(2)
    } else {
      Message({
        type: 'warning',
        message: '比率不能超过100%'
      })
      return 0
    }
  } else {
    return 0.0
  }
}
/* 获取当前屏幕大小 */
function vIsMobile() {
  // 判断是PC还是手机
  // 手机端
  const flag = navigator.userAgent.match(/(phone|pad|iPhone|iPod|ios|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)
  return flag
}
// 判断是否是图片文件
function vCheckIsImg(type) {
  let flag = false
  const reg = /(\.jpg|\.png|\.tif|\.gif|\.jpeg)/i
  if (type && type.match(reg)) {
    flag = true
  }
  return flag
}

// 判断是否是视频文件
function vCheckIsVedio(type) {
  let flag = false
  const reg = /(\.mp4)/i
  if (type && type.match(reg)) {
    flag = true
  }
  return flag
}
// 判断是否是视频文件
function vCheckIsExcel(type) {
  let flag = false
  const reg = /(\.xls|\.xlsx)/i
  if (type && type.match(reg)) {
    flag = true
  }
  return flag
}
/**
 *
 * 校验电话（11位）
 * */
function vCheckPhone(phone) {
  return /^1(3|4|5|6|7|8|9)\d{9}$/.test(phone)
}
/**
 * 校验只能输入汉字
 */
function vCheckChinese(str) {
  const reg = /^[\u4e00-\u9fa5a-z]+$/gi
  return reg.test(str)
}

/**
 * 校验上传图片文件
 */
function vCheckFileType(file) {
  let flag = true
  if (Array.isArray(file)) {
    file.forEach(v => {
      if (v.name && v.name.indexOf(',') > -1) {
        flag = false
      }
    })
  } else {
    if (file.name && file.name.indexOf(',') > -1) {
      flag = false
    }
  }
  if (!flag) {
    console.warn('上传文件名不能包含特殊字符，如","')
  }
  return flag
}
// 判断是否是整数
function vIsInteger(obj) {
  return typeof obj === 'number' && obj % 1 === 0
}

/**
 * 判断是否为空
 * @param {*} obj
 *
 */
function vIsEmpty(obj) {
  var flag = false
  if (typeof obj !== 'boolean') {
    if (typeof obj === 'string') {
      if (obj == '') {
        flag = true
      } else if (obj == 'null') {
        flag = true
      }
    } else if (typeof obj === 'number') {
      if (obj == 0) {
        flag = false
      }
    } else if (typeof obj === 'boolean') {
      flag = obj
    } else if (typeof obj === 'undefined') {
      flag = true
    } else if (typeof obj === 'object') {
      if (obj instanceof Array) {
        if (obj.length == 0) {
          flag = true
        }
      } else if (obj instanceof Object) {
        if (Object.keys(obj).length == 0) {
          flag = true
        }
      } else if (obj == null) {
        flag = true
      }
    }
  }
  return flag
}

function vValidatePhone(val) {
  val = val.replace(/[^\d]/g, '').substr(0, 11)
  if (val.length <= 3) {
    return val
  } else if (val.length <= 7) {
    val = val.replace(/(\d{3})(\d{0,4})/, '$1-$2')
  } else {
    val = val.replace(/(\d{3})(\d{0,4})(\d{0,4})/, '$1-$2-$3')
  }
  return val
}
function vDate(date1, date2) {
  if (date1 && date2) {
    var oDate1 = new Date(date1)
    var oDate2 = new Date(date2)
    return oDate1.getTime() > oDate2.getTime()
  } else {
    return false
  }
}

/**
 * 格式化小于等于1，大于零的两位小数
 * @param {*} x
 *
 */
function vChangeTwoDecimal(x) {
  var f_x = parseFloat(x)
  if (isNaN(f_x)) {
    return (1.0).toFixed(2)
  }
  if (f_x > 1) {
    return (1.0).toFixed(2)
  } else if (f_x < 0) {
    return 1.0
  } else {
    f_x = f_x.toFixed(2)
  }
  return f_x
}
/*
 *  表格重绘
 * @param {Object} self
 * @param {String} str
 */
function tableHeaderDragend(self, str) {
  console.log(str)
  console.log(self)
  if (!vIsEmpty(str)) {
    self.$nextTick(() => {
      self.$refs[str].doLayout()
    })
  }
}

export { vItemEmpty, vPriceLimit, vNumber, vdNumber, vdNumbers, vHundredNumbers, vIsMobile, vCheckIsVedio, vCheckIsExcel, vCheckPhone, vCheckChinese, vCheckFileType, vIsInteger, vCheckIsImg, vIsEmpty, vValidatePhone, vIsTypeOrder, vFormRadio, vDate, vChangeTwoDecimal, tableHeaderDragend, vToFixed2 }
